home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 2
/
Merciful - Disc 2.iso
/
software
/
m
/
maxonc++2.dms
/
maxonc++2.adf
/
MCPIncl.lha
/
intuition
/
intuition.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-01-26
|
29KB
|
890 lines
#ifndef INTUITION_INTUITION_H
#define INTUITION_INTUITION_H TRUE
/*
** $Filename: intuition/intuition.h $
** $Release: 2.04 $
** $Revision: 36.49 $
** $Date: 91/02/22 $
** Interface definitions for Intuition applications.
** (C) Copyright 1985,1986,1987,1988,1989,1990 Commodore-Amiga, Inc.
** All Rights Reserved
*/
// gestrippt von Jens Gelhar 27.01.92
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef GRAPHICS_GFX_H
#include <graphics/gfx.h>
#endif
#ifndef GRAPHICS_CLIP_H
#include <graphics/clip.h>
#endif
#ifndef GRAPHICS_VIEW_H
#include <graphics/view.h>
#endif
#ifndef GRAPHICS_RASTPORT_H
#include <graphics/rastport.h>
#endif
#ifndef GRAPHICS_LAYERS_H
#include <graphics/layers.h>
#endif
#ifndef GRAPHICS_TEXT_H
#include <graphics/text.h>
#endif
#ifndef EXEC_PORTS_H
#include <exec/ports.h>
#endif
#ifndef DEVICES_INPUTEVENT_H
#include <devices/inputevent.h>
#endif
#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif
struct Menu
{
struct Menu *NextMenu;
WORD LeftEdge, TopEdge;
WORD Width, Height;
UWORD Flags;
BYTE *MenuName;
struct MenuItem *FirstItem;
WORD JazzX, JazzY, BeatX, BeatY;
};
#define MENUENABLED 0x0001
#define MIDRAWN 0x0100
struct MenuItem
{
struct MenuItem *NextItem; /* pointer to next in chained list */
WORD LeftEdge, TopEdge; /* position of the select box */
WORD Width, Height; /* dimensions of the select box */
UWORD Flags; /* see the defines below */
LONG MutualExclude; /* set bits mean this item excludes that */
APTR ItemFill; /* points to Image, IntuiText, or NULL */
/* when this item is pointed to by the cursor and the items highlight
* mode HIGHIMAGE is selected, this alternate image will be displayed
*/
APTR SelectFill; /* points to Image, IntuiText, or NULL */
BYTE Command; /* only if appliprog sets the COMMSEQ flag */
struct MenuItem *SubItem; /* if non-zero, points to MenuItem for submenu */
/* The NextSelect field represents the menu number of next selected
* item (when user has drag-selected several items)
*/
UWORD NextSelect;
};
/* FLAGS SET BY THE APPLIPROG */
#define CHECKIT 0x0001 /* set to indicate checkmarkable item */
#define ITEMTEXT 0x0002 /* set if textual, clear if graphical item */
#define COMMSEQ 0x0004 /* set if there's an command sequence */
#define MENUTOGGLE 0x0008 /* set for toggling checks (else mut. exclude) */
#define ITEMENABLED 0x0010 /* set if this item is enabled */
/* these are the SPECIAL HIGHLIGHT FLAG state meanings */
#define HIGHFLAGS 0x00C0 /* see definitions below for these bits */
#define HIGHIMAGE 0x0000 /* use the user's "select image" */
#define HIGHCOMP 0x0040 /* highlight by complementing the selectbox */
#define HIGHBOX 0x0080 /* highlight by "boxing" the selectbox */
#define HIGHNONE 0x00C0 /* don't highlight */
/* FLAGS SET BY BOTH APPLIPROG AND INTUITION */
#define CHECKED 0x0100 /* state of the checkmark */
/* FLAGS SET BY INTUITION */
#define ISDRAWN 0x1000 /* this item's subs are currently drawn */
#define HIGHITEM 0x2000 /* this item is currently highlighted */
#define MENUTOGGLED 0x4000 /* this item was already toggled */
struct Requester
{
struct Requester *OlderRequest;
WORD LeftEdge, TopEdge; /* dimensions of the entire box */
WORD Width, Height; /* dimensions of the entire box */
WORD RelLeft, RelTop; /* for Pointer relativity offsets */
struct Gadget *ReqGadget; /* pointer to a list of Gadgets */
struct Border *ReqBorder; /* the box's border */
struct IntuiText *ReqText; /* the box's text */
UWORD Flags; /* see definitions below */
/* pen number for back-plane fill before draws */
UBYTE BackFill;
/* Layer in place of clip rect */
struct Layer *ReqLayer;
UBYTE ReqPad1[32];
struct BitMap *ImageBMap; /* points to the BitMap of PREDRAWN imagery */
struct Window *RWindow; /* added. points back to Window */
struct Image *ReqImage; /* new for V36: drawn if USEREQIMAGE set */
UBYTE ReqPad2[32];
};
/* FLAGS SET BY THE APPLIPROG */
#define POINTREL 0x0001
/* if POINTREL set, TopLeft is relative to pointer
* for DMRequester, relative to window center
* for Request().
*/
#define PREDRAWN 0x0002
/* set if Requester.ImageBMap points to predrawn Requester imagery */
#define NOISYREQ 0x0004
/* if you don't want requester to filter input */
#define SIMPLEREQ 0x0010
/* to use SIMPLEREFRESH layer (recommended) */
/* New for V36 */
#define USEREQIMAGE 0x0020
/* render linked list ReqImage after BackFill
* but before gadgets and text
*/
#define NOREQBACKFILL 0x0040
/* don't bother filling requester with Requester.BackFill pen */
/* FLAGS SET BY INTUITION */
#define REQOFFWINDOW 0x1000 /* part of one of the Gadgets was offwindow */
#define REQACTIVE 0x2000 /* this requester is active */
#define SYSREQUEST 0x4000 /* this requester caused by system */
#define DEFERREFRESH 0x8000 /* this Requester stops a Refresh broadcast */
struct Gadget
{
struct Gadget *NextGadget; /* next gadget in the list */
WORD LeftEdge, TopEdge; /* "hit box" of gadget */
WORD Width, Height; /* "hit box" of gadget */
UWORD Flags; /* see below for list of defines */
UWORD Activation; /* see below for list of defines */
UWORD GadgetType; /* see below for defines */
APTR GadgetRender;
APTR SelectRender;
struct IntuiText *GadgetText; /* text for this gadget */
LONG MutualExclude; /* obsolete */
APTR SpecialInfo;
UWORD GadgetID;
APTR UserData;
};
/* --- Gadget.Flags values --- */
/* combinations in these bits describe the highlight technique to be used */
#define GFLG_GADGHIGHBITS 0x0003
#define GFLG_GADGHCOMP 0x0000 /* Complement the select box */
#define GFLG_GADGHBOX 0x0001 /* Draw a box around the image */
#define GFLG_GADGHIMAGE 0x0002 /* Blast in this alternate image */
#define GFLG_GADGHNONE 0x0003 /* don't highlight */
#define GFLG_GADGIMAGE 0x0004 /* set if GadgetRender and SelectRender
* point to an Image structure, clear
* if they point to Border structures
*/
#define GFLG_RELBOTTOM 0x0008 /* vert. pos. is relative to bottom edge */
#define GFLG_RELRIGHT 0x0010 /* horiz. pos. is relative to right edge */
#define GFLG_RELWIDTH 0x0020 /* width is relative to req/window */
#define GFLG_RELHEIGHT 0x0040 /* height is relative to req/window */
#define GFLG_SELECTED 0x0080 /* you may initialize and look at this */
/* the GFLG_DISABLED flag is initialized by you and later set by Intuition
* according to your calls to On/OffGadget(). It specifies whether or not
* this Gadget is currently disabled from being selected
*/
#define GFLG_DISABLED 0x0100
#define GFLG_LABELMASK 0x3000
#define GFLG_LABELITEXT 0x0000 /* GadgetText points to IntuiText */
#define GFLG_LABELSTRING 0x1000 /* GadgetText points to (UBYTE *) */
#define GFLG_LABELIMAGE 0x2000 /* GadgetText points to Image (object) */
/* New for V37: GFLG_TABCYCLE */
#define GFLG_TABCYCLE 0x0200 /* (string or custom) gadget participates in
* cycling activation with Tab or Shift-Tab
*/
/* New for V37: GFLG_STRINGEXTEND. We discovered that V34 doesn't properly
* ignore the value we had chosen for the Gadget->Activation flag
* GACT_STRINGEXTEND. NEVER SET THAT FLAG WHEN RUNNING UNDER V34.
* The Gadget->Flags bit GFLG_STRINGEXTEND is provided as a synonym which is
* safe under V34, and equivalent to GACT_STRINGEXTEND under V37.
* (Note that the two flags are not numerically equal)
*/
#define GFLG_STRINGEXTEND 0x0400 /* this String Gadget has StringExtend */
/* --- Gadget.Activation flag values --- */
#define GACT_RELVERIFY 0x0001
#define GACT_IMMEDIATE 0x0002
#define GACT_ENDGADGET 0x0004
#define GACT_FOLLOWMOUSE 0x0008
#define GACT_RIGHTBORDER 0x0010
#define GACT_LEFTBORDER 0x0020
#define GACT_TOPBORDER 0x0040
#define GACT_BOTTOMBORDER 0x0080
#define GACT_BORDERSNIFF 0x8000
#define GACT_TOGGLESELECT 0x0100
#define GACT_BOOLEXTEND 0x2000
/* should properly be in StringInfo, but aren't */
#define GACT_STRINGLEFT 0x0000
#define GACT_STRINGCENTER 0x0200
#define GACT_STRINGRIGHT 0x0400
#define GACT_LONGINT 0x0800
#define GACT_ALTKEYMAP 0x1000
#define GACT_STRINGEXTEND 0x2000
#define GACT_ACTIVEGADGET 0x4000
#define GTYP_GADGETTYPE 0xFC00 /* all Gadget Global Type flags (padded) */
#define GTYP_SYSGADGET 0x8000 /* 1 = Allocated by the system, 0 = by app. */
#define GTYP_SCRGADGET 0x4000 /* 1 = ScreenGadget, 0 = WindowGadget */
#define GTYP_GZZGADGET 0x2000 /* 1 = for WFLG_GIMMEZEROZERO borders */
#define GTYP_REQGADGET 0x1000 /* 1 = this is a Requester Gadget */
/* system gadgets */
#define GTYP_SIZING 0x0010
#define GTYP_WDRAGGING 0x0020
#define GTYP_SDRAGGING 0x0030
#define GTYP_WUPFRONT 0x0040
#define GTYP_SUPFRONT 0x0050
#define GTYP_WDOWNBACK 0x0060
#define GTYP_SDOWNBACK 0x0070
#define GTYP_CLOSE 0x0080
/* application gadgets */
#define GTYP_BOOLGADGET 0x0001
#define GTYP_GADGET0002 0x0002
#define GTYP_PROPGADGET 0x0003
#define GTYP_STRGADGET 0x0004
#define GTYP_CUSTOMGADGET 0x0005
#define GTYP_GTYPEMASK 0x0007 /* masks out to gadget class */
struct BoolInfo
{
UWORD Flags; /* defined below */
UWORD *Mask; /* bit mask for highlighting and selecting
* mask must follow the same rules as an Image
* plane. Its width and height are determined
* by the width and height of the gadget's
* select box. (i.e. Gadget.Width and .Height).
*/
ULONG Reserved; /* set to 0 */
};
/* set BoolInfo.Flags to this flag bit.
* in the future, additional bits might mean more stuff hanging
* off of BoolInfo.Reserved.
*/
#define BOOLMASK 0x0001 /* extension is for masked gadget */
struct PropInfo
{
UWORD Flags; /* general purpose flag bits (see defines below) */
UWORD HorizPot; /* 16-bit FixedPoint horizontal quantity percentage */
UWORD VertPot; /* 16-bit FixedPoint vertical quantity percentage */
UWORD HorizBody; /* horizontal Body */
UWORD VertBody; /* vertical Body */
UWORD CWidth; /* Container width (with any relativity absoluted) */
UWORD CHeight; /* Container height (with any relativity absoluted) */
UWORD HPotRes, VPotRes; /* pot increments */
UWORD LeftBorder; /* Container borders */
UWORD TopBorder; /* Container borders */
};
/* --- FLAG BITS ---------------------------------------------------------- */
#define AUTOKNOB 0x0001
#define FREEHORIZ 0x0002 /* if set, the knob can move horizontally */
#define FREEVERT 0x0004 /* if set, the knob can move vertically */
#define PROPBORDERLESS 0x0008 /* if set, no border will be rendered */
#define KNOBHIT 0x0100 /* set when this Knob is hit */
#define PROPNEWLOOK 0x0010 /* set this if you want to get the new
* V36 look
*/
#define KNOBHMIN 6 /* minimum horizontal size of the Knob */
#define KNOBVMIN 4 /* minimum vertical size of the Knob */
#define MAXBODY 0xFFFF /* maximum body value */
#define MAXPOT 0xFFFF /* maximum pot value */
struct StringInfo
{
/* you initialize these variables, and then Intuition maintains them */
UBYTE *Buffer; /* the buffer containing the start and final string */
UBYTE *UndoBuffer; /* optional buffer for undoing current entry */
WORD BufferPos; /* character position in Buffer */
WORD MaxChars; /* max number of chars in Buffer (including NULL) */
WORD DispPos; /* Buffer position of first displayed character */
/* Intuition initializes and maintains these variables for you */
WORD UndoPos; /* character position in the undo buffer */
WORD NumChars; /* number of characters currently in Buffer */
WORD DispCount; /* number of whole characters visible in Container */
WORD CLeft, CTop; /* topleft offset of the container */
/* struct Layer *LayerPtr; --- obsolete --- */
struct StringExtend *Extension;
/* you can initialize this variable before the gadget is submitted to
* Intuition, and then examine it later to discover what integer
* the user has entered (if the user never plays with the gadget,
* the value will be unchanged from your initial setting)
*/
LONG LongInt;
struct KeyMap *AltKeyMap;
};
struct IntuiText
{
UBYTE FrontPen, BackPen; /* the pen numbers for the rendering */
UBYTE DrawMode; /* the mode for rendering the text */
WORD LeftEdge; /* relative start location for the text */
WORD TopEdge; /* relative start location for the text */
struct TextAttr *ITextFont; /* if NULL, you accept the default */
UBYTE *IText; /* pointer to null-terminated text */
struct IntuiText *NextText; /* pointer to another IntuiText to render */
};
struct Border
{
WORD LeftEdge, TopEdge; /* initial offsets from the origin */
UBYTE FrontPen, BackPen; /* pens numbers for rendering */
UBYTE DrawMode; /* mode for rendering */
BYTE Count; /* number of XY pairs */
WORD *XY; /* vector coordinate pairs rel to LeftTop */
struct Border *NextBorder; /* pointer to any other Border too */
};
struct Image
{
WORD LeftEdge; /* starting offset relative to some origin */
WORD TopEdge; /* starting offsets relative to some origin */
WORD Width; /* pixel size (though data is word-aligned) */
WORD Height;
WORD Depth; /* >= 0, for images you create */
UWORD *ImageData; /* pointer to the actual word-aligned bits */
UBYTE PlanePick, PlaneOnOff;
struct Image *NextImage;
};
struct IntuiMessage
{
struct Message ExecMessage;
ULONG Class;
/* the Code field is for special values like MENU number */
UWORD Code;
/* the Qualifier field is a copy of the current InputEvent's Qualifier */
UWORD Qualifier;
/* IAddress contains particular addresses for Intuition functions, like
* the pointer to the Gadget or the Screen
*/
APTR IAddress;
WORD MouseX, MouseY;
/* the time values are copies of the current system clock time. Micros
* are in units of microseconds, Seconds in seconds.
*/
ULONG Seconds, Micros;
/* the IDCMPWindow variable will always have the address of the Window of
* this IDCMP
*/
struct Window *IDCMPWindow;
/* system-use variable */
struct IntuiMessage *SpecialLink;
};
/* --- IDCMP Classes ------------------------------------------------------ */
/* Please refer to the Autodoc for OpenWindow() and to the Rom Kernel
* Manual for full details on the IDCMP classes.
*/
#define IDCMP_SIZEVERIFY 0x00000001
#define IDCMP_NEWSIZE 0x00000002
#define IDCMP_REFRESHWINDOW 0x00000004
#define IDCMP_MOUSEBUTTONS 0x00000008
#define IDCMP_MOUSEMOVE 0x00000010
#define IDCMP_GADGETDOWN 0x00000020
#define IDCMP_GADGETUP 0x00000040
#define IDCMP_REQSET 0x00000080
#define IDCMP_MENUPICK 0x00000100
#define IDCMP_CLOSEWINDOW 0x00000200
#define IDCMP_RAWKEY 0x00000400
#define IDCMP_REQVERIFY 0x00000800
#define IDCMP_REQCLEAR 0x00001000
#define IDCMP_MENUVERIFY 0x00002000
#define IDCMP_NEWPREFS 0x00004000
#define IDCMP_DISKINSERTED 0x00008000
#define IDCMP_DISKREMOVED 0x00010000
#define IDCMP_WBENCHMESSAGE 0x00020000 /* System use only */
#define IDCMP_ACTIVEWINDOW 0x00040000
#define IDCMP_INACTIVEWINDOW 0x00080000
#define IDCMP_DELTAMOVE 0x00100000
#define IDCMP_VANILLAKEY 0x00200000
#define IDCMP_INTUITICKS 0x00400000
/* for notifications from "boopsi" gadgets */
#define IDCMP_IDCMPUPDATE 0x00800000 /* new for V36 */
/* for getting help key report during menu session */
#define IDCMP_MENUHELP 0x01000000 /* new for V36 */
/* for notification of any move/size/zoom/change window */
#define IDCMP_CHANGEWINDOW 0x02000000 /* new for V36 */
/* NOTEZ-BIEN: 0x80000000 is reserved for internal use */
#define IDCMP_LONELYMESSAGE 0x80000000
/* --- IDCMP Codes -------------------------------------------------------- */
/* This group of codes is for the IDCMP_MENUVERIFY function */
#define MENUHOT 0x0001 /* IntuiWants verification or MENUCANCEL */
#define MENUCANCEL 0x0002 /* HOT Reply of this cancels Menu operation */
#define MENUWAITING 0x0003 /* Intuition simply wants a ReplyMsg() ASAP */
/* These are internal tokens to represent state of verification attempts
* shown here as a clue.
*/
#define OKOK MENUHOT /* guy didn't care */
#define OKABORT 0x0004 /* window rendered question moot */
#define OKCANCEL MENUCANCEL /* window sent cancel reply */
/* This group of codes is for the IDCMP_WBENCHMESSAGE messages */
#define WBENCHOPEN 0x0001
#define WBENCHCLOSE 0x0002
/* A data structure common in V36 Intuition processing */
struct IBox {
WORD Left;
WORD Top;
WORD Width;
WORD Height;
};
struct Window
{
struct Window *NextWindow; /* for the linked list in a screen */
WORD LeftEdge, TopEdge; /* screen dimensions of window */
WORD Width, Height; /* screen dimensions of window */
WORD MouseY, MouseX; /* relative to upper-left of window */
WORD MinWidth, MinHeight; /* minimum sizes */
UWORD MaxWidth, MaxHeight; /* maximum sizes */
ULONG Flags; /* see below for defines */
struct Menu *MenuStrip; /* the strip of Menu headers */
UBYTE *Title; /* the title text for this window */
struct Requester *FirstRequest; /* all active Requesters */
struct Requester *DMRequest; /* double-click Requester */
WORD ReqCount; /* count of reqs blocking Window */
struct Screen *WScreen; /* this Window's Screen */
struct RastPort *RPort; /* this Window's very own RastPort */
BYTE BorderLeft, BorderTop, BorderRight, BorderBottom;
struct RastPort *BorderRPort;
struct Gadget *FirstGadget;
/* these are for opening/closing the windows */
struct Window *Parent, *Descendant;
/* sprite data information for your own Pointer
* set these AFTER you Open the Window by calling SetPointer()
*/
UWORD *Pointer; /* sprite data */
BYTE PtrHeight; /* sprite height (not including sprite padding) */
BYTE PtrWidth; /* sprite width (must be less than or equal to 16) */
BYTE XOffset, YOffset; /* sprite offsets */
/* the IDCMP Flags and User's and Intuition's Message Ports */
ULONG IDCMPFlags; /* User-selected flags */
struct MsgPort *UserPort, *WindowPort;
struct IntuiMessage *MessageKey;
UBYTE DetailPen, BlockPen; /* for bar/border/gadget rendering */
struct Image *CheckMark;
UBYTE *ScreenTitle; /* if non-null, Screen title when Window is active */
WORD GZZMouseX;
WORD GZZMouseY;
/* these variables contain the width and height of the inner-Window of
* WFLG_GIMMEZEROZERO Windows
*/
WORD GZZWidth;
WORD GZZHeight;
UBYTE *ExtData;
BYTE *UserData; /* general-purpose pointer to User data extension */
/** 11/18/85: this pointer keeps a duplicate of what
* Window.RPort->Layer is _supposed_ to be pointing at
*/
struct Layer *WLayer;
/* NEW 1.2: need to keep track of the font that
* OpenWindow opened, in case user SetFont's into RastPort
*/
struct TextFont *IFont;
/* (V36) another flag word (the Flags field is used up).
* At present, all flag values are system private.
* Until further notice, you may not change nor use this field.
*/
ULONG MoreFlags;
/**** Data beyond this point are Intuition Private. DO NOT USE ****/
};
/* --- Flags requested at OpenWindow() time by the application --------- */
#define WFLG_SIZEGADGET 0x00000001 /* include sizing system-gadget? */
#define WFLG_DRAGBAR 0x00000002 /* include dragging system-gadget? */
#define WFLG_DEPTHGADGET 0x00000004 /* include depth arrangement gadget? */
#define WFLG_CLOSEGADGET 0x00000008 /* include close-box system-gadget? */
#define WFLG_SIZEBRIGHT 0x00000010 /* size gadget uses right border */
#define WFLG_SIZEBBOTTOM 0x00000020 /* size gadget uses bottom border */
/* --- refresh modes ------------------------------------------------------ */
/* combinations of the WFLG_REFRESHBITS select the refresh type */
#define WFLG_REFRESHBITS 0x000000C0
#define WFLG_SMART_REFRESH 0x00000000
#define WFLG_SIMPLE_REFRESH 0x00000040
#define WFLG_SUPER_BITMAP 0x00000080
#define WFLG_OTHER_REFRESH 0x000000C0
#define WFLG_BACKDROP 0x00000100 /* this is a backdrop window */
#define WFLG_REPORTMOUSE 0x00000200 /* to hear about every mouse move */
#define WFLG_GIMMEZEROZERO 0x00000400 /* a GimmeZeroZero window */
#define WFLG_BORDERLESS 0x00000800 /* to get a Window sans border */
#define WFLG_ACTIVATE 0x00001000 /* when Window opens, it's Active */
/* FLAGS SET BY INTUITION */
#define WFLG_WINDOWACTIVE 0x00002000 /* this window is the active one */
#define WFLG_INREQUEST 0x00004000 /* this window is in request mode */
#define WFLG_MENUSTATE 0x00008000 /* Window is active with Menus on */
/* --- Other User Flags --------------------------------------------------- */
#define WFLG_RMBTRAP 0x00010000 /* Catch RMB events for your own */
#define WFLG_NOCAREREFRESH 0x00020000 /* not to be bothered with REFRESH */
/* --- Other Intuition Flags ---------------------------------------------- */
#define WFLG_WINDOWREFRESH 0x01000000 /* Window is currently refreshing */
#define WFLG_WBENCHWINDOW 0x02000000 /* WorkBench tool ONLY Window */
#define WFLG_WINDOWTICKED 0x04000000 /* only one timer tick at a time */
/* - V36 new Flags which the programmer may specify in NewWindow.Flags */
#define WFLG_NW_EXTENDED 0x00040000 /* extension data provided */
/* see struct ExtNewWindow */
/* --- V36 Flags to be set only by Intuition ------------------------- */
#define WFLG_VISITOR 0x08000000 /* visitor window */
#define WFLG_ZOOMED 0x10000000 /* identifies "zoom state" */
#define WFLG_HASZOOM 0x20000000 /* windowhas a zoom gadget */
/* --- Other Window Values ---------------------------------------------- */
#define DEFAULTMOUSEQUEUE (5) /* no more mouse messages */
/* --- see struct IntuiMessage for the IDCMP Flag definitions ------------- */
struct NewWindow
{
WORD LeftEdge, TopEdge; /* screen dimensions of window */
WORD Width, Height; /* screen dimensions of window */
UBYTE DetailPen, BlockPen; /* for bar/border/gadget rendering */
ULONG IDCMPFlags; /* User-selected IDCMP flags */
ULONG Flags; /* see Window struct for defines */
struct Gadget *FirstGadget;
struct Image *CheckMark;
UBYTE *Title; /* the title text for this window */
struct Screen *Screen;
struct BitMap *BitMap;
WORD MinWidth, MinHeight; /* minimums */
UWORD MaxWidth, MaxHeight; /* maximums */
UWORD Type;
};
struct ExtNewWindow
{
WORD LeftEdge, TopEdge;
WORD Width, Height;
UBYTE DetailPen, BlockPen;
ULONG IDCMPFlags;
ULONG Flags;
struct Gadget *FirstGadget;
struct Image *CheckMark;
UBYTE *Title;
struct Screen *Screen;
struct BitMap *BitMap;
WORD MinWidth, MinHeight;
UWORD MaxWidth, MaxHeight;
UWORD Type;
struct TagItem *Extension;
};
#define WA_Dummy (TAG_USER + 99) /* 0x80000063 */
/* these tags simply override NewWindow parameters */
#define WA_Left (WA_Dummy + 0x01)
#define WA_Top (WA_Dummy + 0x02)
#define WA_Width (WA_Dummy + 0x03)
#define WA_Height (WA_Dummy + 0x04)
#define WA_DetailPen (WA_Dummy + 0x05)
#define WA_BlockPen (WA_Dummy + 0x06)
#define WA_IDCMP (WA_Dummy + 0x07)
/* "bulk" initialization of NewWindow.Flags */
#define WA_Flags (WA_Dummy + 0x08)
#define WA_Gadgets (WA_Dummy + 0x09)
#define WA_Checkmark (WA_Dummy + 0x0A)
#define WA_Title (WA_Dummy + 0x0B)
/* means you don't have to call SetWindowTitles
* after you open your window
*/
#define WA_ScreenTitle (WA_Dummy + 0x0C)
#define WA_CustomScreen (WA_Dummy + 0x0D)
#define WA_SuperBitMap (WA_Dummy + 0x0E)
/* also implies WFLG_SUPER_BITMAP property */
#define WA_MinWidth (WA_Dummy + 0x0F)
#define WA_MinHeight (WA_Dummy + 0x10)
#define WA_MaxWidth (WA_Dummy + 0x11)
#define WA_MaxHeight (WA_Dummy + 0x12)
/* The following are specifications for new features */
#define WA_InnerWidth (WA_Dummy + 0x13)
#define WA_InnerHeight (WA_Dummy + 0x14)
#define WA_PubScreenName (WA_Dummy + 0x15)
#define WA_PubScreen (WA_Dummy + 0x16)
#define WA_PubScreenFallBack (WA_Dummy + 0x17)
#define WA_WindowName (WA_Dummy + 0x18)
#define WA_Colors (WA_Dummy + 0x19)
#define WA_Zoom (WA_Dummy + 0x1A)
#define WA_MouseQueue (WA_Dummy + 0x1B)
#define WA_BackFill (WA_Dummy + 0x1C)
#define WA_RptQueue (WA_Dummy + 0x1D)
#define WA_SizeGadget (WA_Dummy + 0x1E)
#define WA_DragBar (WA_Dummy + 0x1F)
#define WA_DepthGadget (WA_Dummy + 0x20)
#define WA_CloseGadget (WA_Dummy + 0x21)
#define WA_Backdrop (WA_Dummy + 0x22)
#define WA_ReportMouse (WA_Dummy + 0x23)
#define WA_NoCareRefresh (WA_Dummy + 0x24)
#define WA_Borderless (WA_Dummy + 0x25)
#define WA_Activate (WA_Dummy + 0x26)
#define WA_RMBTrap (WA_Dummy + 0x27)
#define WA_WBenchWindow (WA_Dummy + 0x28) /* PRIVATE!! */
#define WA_SimpleRefresh (WA_Dummy + 0x29)
/* only specify if TRUE */
#define WA_SmartRefresh (WA_Dummy + 0x2A)
/* only specify if TRUE */
#define WA_SizeBRight (WA_Dummy + 0x2B)
#define WA_SizeBBottom (WA_Dummy + 0x2C)
/* New Boolean properties */
#define WA_AutoAdjust (WA_Dummy + 0x2D)
#define WA_GimmeZeroZero (WA_Dummy + 0x2E)
/* equiv. to NewWindow.Flags WFLG_GIMMEZEROZERO */
/* New for V37: WA_MenuHelp (ignored by V36) */
#define WA_MenuHelp (WA_Dummy + 0x2F)
#ifndef INTUITION_SCREENS_H
#include <intuition/screens.h>
#endif
#ifndef INTUITION_PREFERENCES_H
#include <intuition/preferences.h>
#endif
struct Remember
{
struct Remember *NextRemember;
ULONG RememberSize;
UBYTE *Memory;
};
/* === Color Spec ====================================================== */
/* How to tell Intuition about RGB values for a color table entry. */
struct ColorSpec {
WORD ColorIndex; /* -1 terminates an array of ColorSpec */
UWORD Red; /* only 6 bits recognized in V36 */
UWORD Green; /* only 6 bits recognized in V36 */
UWORD Blue; /* only 6 bits recognized in V36 */
};
struct EasyStruct {
ULONG es_StructSize;
ULONG es_Flags;
UBYTE *es_Title;
UBYTE *es_TextFormat;
UBYTE *es_GadgetFormat;
};
/* === Miscellaneous ====================================================== */
#define MENUNUM(n) (n & 0x1F)
#define ITEMNUM(n) ((n >> 5) & 0x003F)
#define SUBNUM(n) ((n >> 11) & 0x001F)
#define SHIFTMENU(n) (n & 0x1F)
#define SHIFTITEM(n) ((n & 0x3F) << 5)
#define SHIFTSUB(n) ((n & 0x1F) << 11)
#define FULLMENUNUM( menu, item, sub ) \
( SHIFTSUB(sub) | SHIFTITEM(item) | SHIFTMENU(menu) )
#define SRBNUM(n) (0x08 - (n >> 4)) /* SerRWBits -> read bits per char */
#define SWBNUM(n) (0x08 - (n & 0x0F))/* SerRWBits -> write bits per chr */
#define SSBNUM(n) (0x01 + (n >> 4)) /* SerStopBuf -> stop bits per chr */
#define SPARNUM(n) (n >> 4) /* SerParShk -> parity setting */
#define SHAKNUM(n) (n & 0x0F) /* SerParShk -> handshake mode */
/* = MENU STUFF =========================================================== */
#define NOMENU 0x001F
#define NOITEM 0x003F
#define NOSUB 0x001F
#define MENUNULL 0xFFFF
/* = =RJ='s peculiarities ================================================= */
#define FOREVER for(;;)
#define SIGN(x) ( ((x) > 0) - ((x) < 0) )
#define NOT !
#define CHECKWIDTH 19
#define COMMWIDTH 27
#define LOWCHECKWIDTH 13
#define LOWCOMMWIDTH 16
#define ALERT_TYPE 0x80000000
#define RECOVERY_ALERT 0x00000000 /* the system can recover from this */
#define DEADEND_ALERT 0x80000000 /* no recovery possible, this is it */
#define AUTOFRONTPEN 0
#define AUTOBACKPEN 1
#define AUTODRAWMODE JAM2
#define AUTOLEFTEDGE 6
#define AUTOTOPEDGE 3
#define AUTOITEXTFONT NULL
#define AUTONEXTTEXT NULL
#define SELECTUP (IECODE_LBUTTON | IECODE_UP_PREFIX)
#define SELECTDOWN (IECODE_LBUTTON)
#define MENUUP (IECODE_RBUTTON | IECODE_UP_PREFIX)
#define MENUDOWN (IECODE_RBUTTON)
#define MIDDLEDOWN (IECODE_MBUTTON)
#define MIDDLEUP (IECODE_MBUTTON | IECODE_UP_PREFIX)
#define ALTLEFT (IEQUALIFIER_LALT)
#define ALTRIGHT (IEQUALIFIER_RALT)
#define AMIGALEFT (IEQUALIFIER_LCOMMAND)
#define AMIGARIGHT (IEQUALIFIER_RCOMMAND)
#define AMIGAKEYS (AMIGALEFT | AMIGARIGHT)
#define CURSORUP 0x4C
#define CURSORLEFT 0x4F
#define CURSORRIGHT 0x4E
#define CURSORDOWN 0x4D
#define KEYCODE_Q 0x10
#define KEYCODE_Z 0x31
#define KEYCODE_X 0x32
#define KEYCODE_V 0x34
#define KEYCODE_B 0x35
#define KEYCODE_N 0x36
#define KEYCODE_M 0x37
#define KEYCODE_LESS 0x38
#define KEYCODE_GREATER 0x39
/* Include obsolete identifiers: */
#ifndef INTUITION_IOBSOLETE_H
#include <intuition/iobsolete.h>
#endif
#endif